﻿using Microsoft.Extensions.Configuration;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Scheduling.Infrastructuse
{
    public class SqlSugarDbHelp
    {
        public SqlSugarClient Db { get; private set; }

        // 构造函数注入配置，初始化数据库连接
        public SqlSugarDbHelp(IConfiguration configuration)
        {
            // 1. 从配置文件（如appsettings.json）读取连接字符串
            // 注意：需在 appsettings.json 中配置 "ConnectionStrings" 节点
            string connectionString = configuration.GetConnectionString("conn");
            if (string.IsNullOrEmpty(connectionString))
            {
                throw new ArgumentNullException("数据库连接字符串未配置，请检查 appsettings.json");
            }

            // 2. 配置 SqlSugar 连接信息（默认以 SQL Server 为例，其他数据库需改 DbType）
            var dbConfig = new ConnectionConfig
            {
                ConnectionString = connectionString, // 数据库连接串
                DbType = DbType.SqlServer,           // 数据库类型（可选：MySql、Oracle、Sqlite 等）
                IsAutoCloseConnection = true,        // 自动关闭连接（推荐开启，避免连接泄露）
                InitKeyType = InitKeyType.Attribute  // 从实体类特性（如[SugarColumn(IsPrimaryKey=true)]）读取主键/自增等配置
            };

            // 3. 创建 SqlSugarClient 实例并赋值
            Db = new SqlSugarClient(dbConfig);

            // 4. 可选：开启SQL日志（开发环境用，生产环境建议关闭）
            Db.Aop.OnLogExecuting = (sql, pars) =>
            {
                Console.WriteLine($"执行SQL：{sql}");
                // 如需打印参数，可循环 pars 输出
            };
        }
    }
}
